package com.hex.ds.hdrs.engine.service;

import com.hex.ds.hdrs.agent.po.AgentConf;
import com.hex.ds.hdrs.agent.service.AgentConfService;
import com.hex.ds.hdrs.app.dto.AppAgentRelationDto;
import com.hex.ds.hdrs.app.po.AppAgentRelationPo;
import com.hex.ds.hdrs.app.po.AppConf;
import com.hex.ds.hdrs.app.po.AppExecStrategyPo;
import com.hex.ds.hdrs.app.po.GroupConf;
import com.hex.ds.hdrs.app.service.IAppAgentRelationService;
import com.hex.ds.hdrs.app.service.IAppExecStrategyService;
import com.hex.ds.hdrs.app.service.impl.AppConfService;
import com.hex.ds.hdrs.app.service.impl.GroupConfService;
import com.hex.ds.hdrs.period.task.po.MutexPool;
import com.hex.ds.hdrs.period.task.service.MutexPoolService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @Package: com.hex.ds.hdrs.engine.service
 * @ClassName ManagerService
 * @Description: Manager 服务层
 * @Author: jd.chen
 * @Date 2021/7/5 17:18
 * @Version v1.0
 **/
@Service
public class ManagerService {

    @Autowired
    private AgentConfService agentConfService;
    @Autowired
    private AppConfService appConfService;
    @Autowired
    private GroupConfService groupConfService;
    @Autowired
    private IAppExecStrategyService appExecStrategyService;
    @Autowired
    private MutexPoolService mutexPoolService;
    @Autowired
    private IAppAgentRelationService appAgentRelationService;

    /**
     * @Method: qryAgentConfByAgentCode
     * @Param: [agentCode]
     * @Return: com.hex.ds.hdrs.agent.po.AgentConf
     * @Description： 通过节点编码 查询节点信息
     * @Author： jd.chen
     * @Date： 2021/7/5 17:19
     * @Version： V1.0
     */
    public AgentConf qryAgentConfByAgentCode(String agentCode) {
        return agentConfService.qryAgentConfByAgentCode(agentCode);
    }

    /**
     * @Method: qryAppConfList
     * @Param: []
     * @Return: java.util.List<com.hex.ds.hdrs.app.po.AppConf>
     * @Description： 查询所有应用信息
     * @Author： jd.chen
     * @Date： 2021/7/5 17:20
     * @Version： V1.0
     */
    public List<AppConf> qryAppConfList() {
        return appConfService.qryAppConfList();
    }

    /**
     * @Method: qryGroupCode
     * @Param: []
     * @Return: java.util.List<com.hex.ds.hdrs.app.po.GroupConf>
     * @Description： 查询应用组信息
     * @Author： jd.chen
     * @Date： 2021/7/5 17:20
     * @Version： V1.0
     */
    public List<GroupConf> qryGroupCode() {
        return groupConfService.qryGroupCode();
    }

    /**
     * @Method: findAppByGroupCode
     * @Param: [groupCode]
     * @Return: java.util.List<com.hex.ds.hdrs.app.po.AppConf>
     * @Description： 通过应用组编码查询应用
     * @Author： jd.chen
     * @Date： 2021/7/5 17:21
     * @Version： V1.0
     */
    public List<AppConf> findAppByGroupCode(String groupCode) {
        return appConfService.findAppByGroupCode(groupCode);
    }

    public void updateMutexTaskForAppSeesion(String appCode) {
        mutexPoolService.updateMutexTaskForAppSeesion(appCode);
    }

    /**
     * @Method: qryExecByAppCode
     * @Param: [appCode]
     * @Return: java.util.List<com.hex.ds.hdrs.app.po.AppExecStrategy>
     * @Description： 通过应用编码查询执行策略
     * @Author： jd.chen
     * @Date： 2021/7/5 17:22
     * @Version： V1.0
     */
    public List<AppExecStrategyPo> qryExecByAppCode(String appCode) {
        return appExecStrategyService.queryListByAppCode(appCode);
    }

    /**
     * @Method: qryNodeInfoByAppCode
     * @Param: [appCode]
     * @Return: java.util.List<com.hex.ds.hdrs.app.po.AppAgentRelation>
     * @Description： 通过应用编码查询节点信息
     * @Author： jd.chen
     * @Date： 2021/7/5 17:23
     * @Version： V1.0
     */
    public List<AppAgentRelationPo> qryNodeInfoByAppCode(String appCode) {
        return appAgentRelationService.queryListByAppCode(appCode);
    }

    /**
     * @Method: qryAppConfByAgentCode
     * @Param: [agentCode]
     * @Return: java.util.List<com.hex.ds.hdrs.app.po.AppConf>
     * @Description： 通过节点编码查询应用信息
     * @Author： jd.chen
     * @Date： 2021/7/5 17:24
     * @Version： V1.0
     */
    public List<AppConf> qryAppConfByAgentCode(String agentCode) {
        return appConfService.qryAppConfByAgentCode(agentCode);
    }

    /**
     * @Method: qryAgentConfByAppCode
     * @Param: [appCode]
     * @Return: java.util.List<com.hex.ds.hdrs.agent.po.AgentConf>
     * @Description： 通过应用编码查询节点信息
     * @Author： jd.chen
     * @Date： 2021/7/5 17:24
     * @Version： V1.0
     */
    public List<AgentConf> qryAgentConfByAppCode(String appCode) {
        return agentConfService.qryAgentConfByAppCode(appCode);
    }
}
